package dao

import (
	"context"
	"fmt"
	_ "github.com/go-sql-driver/mysql" //初始化
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type dao struct {
	db *gorm.DB
}

func New() (d *dao) {
	//todo
	timeout := "10s"
	dsn := "root:T123456@@tcp(127.0.0.1:3306)/gotest?charset=utf8&parseTime=True&loc=Local&timeout" + timeout
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	sqlDB, _ := db.DB()

	sqlDB.SetMaxOpenConns(100) //设置数据库连接池最大连接数
	sqlDB.SetMaxIdleConns(20)  //连接池最大允许的空闲连接数，如果没有sql任务需要执行的连接数大于20，超过的连接会被连接池关闭

	if err != nil {
		panic("连接数据库失败, error=" + err.Error())
	}
	d = &dao{
		db: db,
	}
	d.initmysql()
	fmt.Println("数据库连接成功")
	return
}

type Dao interface {
	//
	InsertUser(c context.Context, username, password string) (userid uint, err error)
	Close()
}
